package labnumero4;

//estas son las librerias que se importan para trabajar
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Random;
import java.util.*;



//ESTE ES EL MAIN QUE UTILIZA MERGESORT


/**
 * ALGORITMOS Y ESTRUCTURA DE DATOS
 *HOJA DE TRABAJO 3
 * SECCION 10
 * 
/**
 *
 * ROGER DIAZ  12176
 * Victor Fuentes 12298
 * Mayra Beb 12537
 * Marcos Lopez 12529
 */

public class MergeMain {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
 
        //nombre del archivo
    String nombreArch="datos.txt";
    
    FileWriter escritor=null;
   
    int aleatorio;
    try {
        //se trabaja para crear un archivo de numeros random segun el valor de i 
        escritor=new FileWriter(nombreArch);
        BufferedWriter bw=new BufferedWriter(escritor);
        PrintWriter salArch=new PrintWriter(bw);
        //variable para ir haciendo los numeros
        int i=100; 
        while(i>0){
            //hace el doble del valor de i porque trabaja dos veces
            salArch.println(aleatorio=(int)(Math.random()*100));//genara [0,10)
            //salArch.println(aleatorio=(int)(Math.random()*2-10));
            //generar negativos
            salArch.println(aleatorio=(int)(Math.random()*200-100));//generar (-5,0)
            i--;
        }
        
        //guarda el archivo porque cierra escritor
        salArch.close();
        bw.close();
        
        //por algun error
    }catch(Exception  e){
        System.out.println("error");
    }
    
    //lectura del archivo datos.txt 
    String linea="";
    ArrayList nlinea=new ArrayList();
    
    //variable local
    Scanner archivo;
    
    try{
        //se va viendo lo que tiene datos.txt
        archivo=new Scanner (new File("datos.txt"));
        while(archivo.hasNext()){
            //para irlo guardando en el array
            linea=archivo.nextLine();
            nlinea.add(linea);//objeto nlinea de tipo arraylista tiene 
                               //todos los caracteres del archivo
            
        }
        System.out.println(nlinea);//se imprimien los datos tamados del archivo
    }catch(Exception e){
        System.out.println("No se encontro el archivo");
    }
    
   
        System.out.println("Impresion de lista ordenada por primera vez, lista ingreso desordenada");
        //objeto MergeSort que va a trabajar luego de haberse hecho el archivo
        MergeSort mergesort=new MergeSort(nlinea);//al instanciar el objeto de una vez se ordena
//estas son impresiones del trabajo realizado
        mergesort.Ordenada();//metodo para coopiar datos e imprimirlos
        mergesort.imprimirArrayOrdenado();//impresion de listaOrdenada de tipo ArrayList
        System.out.println("----------------------");
        System.out.println("Impresion de lista ordenada, se ejecuta el algoritmo por segunda vez con lista ya ordenada");
        mergesort.copiarLista();//metodo que copia lista para volver a ejecutar el algoritmo con lista ordenada
        mergesort.EXE2();//metodo para volver a ejectuar con lista ya ordenada
        //quicksort.imprimirArrayOrdenado();//impresion de listaOdenada de tipo ArrayList
        System.out.println(mergesort.imprimirList2Ordenada());
        System.out.println("HOLA");
    }
}
